home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
hk
/
bassrc
/
hk4main.bas
< prev
next >
Wrap
BASIC Source File
|
1993-07-08
|
19KB
|
500 lines
10 '------------------------------------------------------------------
20 ' HK4MAIN.BAS Copyrigit(C) T.Komura / 家計簿システム /
30 ' / Version 4 /
31 ' Version 4.0 1992.08.08 / MAINプログラム /
32 ' / /
100 '------------------------------------------------------------------
150 DIM CFI$(15)
160 GOSUB *CONFIGファイルチェック
170 'LOCATE 0,5
175 'PRINT PRGDRV$,DATDRV$,RAMDRV$,TIFDRV$,FMBDRV$,SNDMF,SNDDRV$,SWAIT
180 'FOR II=1 TO 15:PRINT CFI$(II):NEXT II:STOP
190 '
193 VERN$="4.0" 'バージョンNo.
200 *初期設定:'--------------------------------------------------------
210 CMD$="CD "+PRGDRV$:SHELL CMD$
220 SCREEN@ 0 :COLOR 7,0,0,4:CLS:CONSOLE 0,24,0:MOUSE 0
230 DIM MSGD%(28000):' 音声メッセージ配列定義 プログラム先頭で定義
235 DIM L_W$(80)
240 LOAD@ FMBDRV$+"\FMP.FMB"
250 PLAY "@30T150V6":DATX$=DATE$
260 DIM XB1(2,5),XB2(2,5),YB1(2,5),YB2(2,5),BST(2,5)
265 DIM DYN$(20),DRM$(20)
270 DIM CUTN#(795)
320 GOSUB *ボタン座標読み取り
330 'CLS:COLOR 7:PRINT int((int(((630-234+1)+7)/8)*(97-71+1)*4+8-1)/8)
370 ON ERROR GOTO *ERROR
380 '
1000 *メインルーチン:'・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
1005 GOSUB *表紙表示
1010 MESN=21:GOSUB *SNDMSG
1020 MOUSE 1,320,64,1
1040 GOSUB *HLIDXファイルチェック
1100 *メイン選択
1110 '
1130 SWPASS=1:G=1:GOSUB *マウスボタン選択
1145 IF SWNO>4 THEN *メイン選択
1150 ON SWNO GOTO *S01,*S02,*S03,*S04
1160 GOTO 1100:STOP
2000 *S01
2020 G=1:B=1:BST(G,B)=1:GOSUB *ボタンON_OFF表示
2030 CHAIN "HK4IN.BAS"
2100 *S02
2120 G=1:B=2:BST(G,B)=1:GOSUB *ボタンON_OFF表示
2130 CHAIN "HK4SRCH.BAS"
2200 *S03
2220 G=1:B=3:BST(G,B)=1:GOSUB *ボタンON_OFF表示
2230 CHAIN "HK4ANLY.BAS"
3490 '
8940 '
9000 *S04:'終了・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
9020 G=1:B=4:BST(G,B)=1:GOSUB *ボタンON_OFF表示
9110 MESN=6:GOSUB *SNDMSG
9120 FOR II=1 TO 5000:NEXT II
9130 MOUSE 5:GOSUB *FADEOUT
9140 SHELL "cd \"
9150 SYSTEM
9160 '
9900 '-------------------------------------------------------------------
9910 ' GENERAL SUB ROUTINE
9920 '-------------------------------------------------------------------
10000 *CHR1IN:'////////// 1文字入力
10010 A$=INKEY$:IF A$="" THEN 10010
10020 A=INSTR(C$,A$)
10030 IF A=0 THEN MESN=13:GOSUB *SNDMSG:GOTO 10010
10040 RETURN
10050 '
10060 '
10990 '
11000 *SNDMSG:' SAVE "SNDMSG.SUB",A
11005 IF SNDMF=0 THEN RETURN
11010 '・・・・・・・・・・・・・・・・・ サウンドメッセージ実行サブルーチン 1989.02.04
11020 ' 入力=MESN (メッセージNo.)
11030 '
11070 IF MESN>36 THEN *RETURN_SNDMSG :'END
11080 RESTORE *MSGNAM
11090 FOR IMSG=1 TO MESN
11100 READ MSGD$
11110 NEXT IMSG
11120 MSGFN$=SNDDRV$+"\"+MSGD$+"_F.SND"
11130 LOAD@ MSGFN$,MSGD%
11140 PCMPLAY MSGD%:WAIT SWAIT
11150 *RETURN_SNDMSG :RETURN
11160 *MSGNAM :'////////// .SND File Name Data
11170 DATA "OHA1" :' 1 おはよう
11180 DATA "KONN" :' 2 こんにちわ
11190 DATA "KONBAN" :' 3 こんばんわ
11200 DATA "GOKRO1" :' 4 ごくろうさん
11210 DATA "GOKRO2" :' 5 ごくろうさま
11220 DATA "OTUKA" :' 6 お疲れさま
11230 DATA "OMATA" :' 7 おまたせ
11240 DATA "ARIGA2" :' 8 ありがとう
11250 DATA "RUNRUN" :' 9 るんるん
11260 DATA "DAMEDE" :' 10 だめでしょう
11270 DATA "IIDE1" :' 11 いいですか
11280 DATA "NANISI" :' 12 なにしてるの
11290 DATA "DAMEDA" :' 13 だめだめ
11300 DATA "OWARI" :' 14 終わりました
11310 DATA "SIBA" :' 15 しばらくお待ち下さい
11320 DATA "YOROSI" :' 16 よろしいですか
11330 DATA "TYANTO" :' 17 ちゃんとしなさい
11340 DATA "ERANDE" :' 18 選んでください
11350 DATA "KAKNIN" :' 19 確認して下さい
11360 DATA "NYURYO" :' 20 入力してください
11370 DATA "IRA" :' 21 いらっしゃいませ
11380 DATA "OYASUM" :' 22 おやすみ
11390 DATA "ARIGA3" :' 23 ありがとうございました
11400 DATA "TYOTO" :' 24 ちょっと待って
11410 DATA "OOKINA" :' 25 大きな間違い
11420 DATA "YAMETE" :' 26 やめて
11430 DATA "TIGAU" :' 27 ちがうよ
11440 DATA "PINPON" :' 28 ぴんぽーん
11450 DATA "BUU" :' 29 ぶー
11460 DATA "MOUII" :' 30 もういいよう
11470 DATA "DEKITA" :' 31 できたよー
11480 DATA "IIDE2" :' 32 いいですか(2)
11490 DATA "YOSI" :' 33 よしなさい
11500 DATA "OYOSI" :' 34 およしなさい
11510 DATA "YAMENA" :' 35 やめなさい
11520 DATA "GOMEN" :' 36 ごめん
11530 '
13000 ' 1993.02.12 T.Komura
13010 *LKEYIN :'・・・・・・・・・・・ 1 行全角文字入力サブルーチン
13020 ' v1.1a 入力 = LX,LY : 表示開始座標 出力 = LMG$ : 入力後の文字列
13030 ' LM$ : 初期文字列
13040 ' LC : 表示文字色
13050 ' LL : 最大文字数
13060 '
13070 LCSRCL=2:LLINCL=6
13080 ' CR MR ML INS DEL BS CAN
13085 LMSX=MOUSE(0):LMSY=MOUSE(1):MOUSE 5 :'v1.1a
13090 CC$=CHR$(&H0D,&H1C,&H1D,&H12,&H7F,&H08,&H18)
13100 LMG$=SPACE$(LL):LMGD$=SPACE$(LL)
13110 LA$=INKEY$:IF LA$<>"" THEN 13110
13120 LCSR=0:LCSRX=LCSR:GOSUB *LCSRDX
13130 LOCATE LX,LY:COLOR LC:PRINT LM$ ' ・・・・・・・・・・ 初期文字列記憶
13140 LINE(LX*8,LY*19+16)-((LX+LL)*8,LY*19+17),XOR,LLINCL,BF
13150 LMX$=LEFT$(LM$+SPACE$(LL),LL)
13160 GOSUB *LMREAD
13170 *IN1C:' ・・・・・・・・・・ 1 文字入力
13180 LA$=INKEY$:IF LA$="" THEN 13180
13190 ALA=ASC(LA$):CLA=INSTR(CC$,LA$)
13200 IF CLA=0 THEN 13220
13210 ON CLA GOTO *CR,*MR,*ML,*INS,*DEL,*BS,*CAN
13220 IF KANF=1 THEN *KANJI
13230 IF ALA<&H20 THEN BEEP:GOTO *IN1C
13240 IF ALA>=&H20 AND ALA<&H80 THEN *ANK
13250 IF ALA>=&HA0 AND ALA<&HE0 THEN *ANK
13260 GOTO *KANJI
13270 *ANK :' ・・・・・・・・・・ ANK 文字入力
13280 LOCATE LX+LCSR,LY:COLOR LC:PRINT LA$
13290 MID$(LMX$,LCSR+1,1)=LA$
13300 GOSUB *LCSRINC:GOTO *IN1C
13310 *KANJI :' ・・・・・・・・・・ 漢字文字入力
13320 ON KANF+1 GOTO 13330,13360
13330 KANF=1:KANW$="":KANW$=LA$
13340 IF LCSR+1>=LL THEN KANF=0:BEEP
13350 GOSUB *LCSRD:GOTO *IN1C
13360 KANF=0:KANW$=KANW$+LA$
13370 LOCATE LX+LCSR,LY:COLOR LC:PRINT KANW$
13380 MID$(LMX$,LCSR+1,2)=KANW$
13390 GOSUB *LCSR2INC:GOTO *IN1C
13400 *CR :GOSUB *LMREAD :GOSUB *LCSRDX '////////// End
13410 LINE(LX*8,LY*19+16)-((LX+LL)*8,LY*19+17),XOR,LLINCL,BF
13415 MOUSE 0: MOUSE 1,LMSX,LMSY,1 :'v1.1a
13420 RETURN:'----------------------------------------------------------
13430 *MR :GOSUB *LCSRINC '////////// Right
13440 GOTO *IN1C
13450 *ML :GOSUB *LCSRDEC '////////// Left
13460 GOTO *IN1C
13470 *INS:GOSUB *LMREAD '////////// Insert
13480 IF LMGF$="2" THEN BEEP:GOTO *IN1C
13490 LMX$=LEFT$(LMG$,LCSR)+" "+MID$(LMG$,LCSR+1,LL-1-LCSR)
13500 GOSUB *LMXDSP
13510 GOTO *IN1C
13520 *DEL:GOSUB *LMREAD '////////// Delete
13530 IF LMGF$="2" THEN BEEP:GOTO *IN1C
13540 IF LMGF$="1" THEN 13560
13550 LMX$=LEFT$(LMG$,LCSR)+MID$(LMG$,LCSR+2,LL-1-LCSR)+" ":GOTO 13570
13560 LMX$=LEFT$(LMG$,LCSR)+MID$(LMG$,LCSR+3,LL-2-LCSR)+" "
13570 GOSUB *LMREAD
13580 GOSUB *LMXDSP:GOTO *IN1C
13590 *BS :GOSUB *LMREAD '////////// BackSpace
13600 IF LCSR=0 THEN BEEP:GOTO *IN1C
13610 IF LMGF$="2" THEN BEEP:GOTO *IN1C
13620 GOSUB *LCSRDEC:GOSUB *LMREAD:LMGFX$=LMGF$
13630 LMX$=LEFT$(LMG$,LCSR)+MID$(LMG$,LCSR+2,LL-1-LCSR)+" "
13640 IF LMGFX$="2" THEN LMGFX$="0":GOSUB *LMREAD:GOTO 13620
13650 GOSUB *LMXDSP
13660 GOTO *IN1C
13670 *CAN :LMX$=SPACE$(LL) '////////// Clear
13680 GOSUB *LMXDSP:LCSR=0:GOSUB *LCSRD
13690 GOSUB *LMREAD:GOTO *IN1C
13700 *LMREAD: '////////// Disp Char Read
13710 LMDX=0:LMGD$=""
13720 FOR II=1 TO LL
13730 LMG=ASC(MID$(LMX$,II,1))
13740 IF (LMG>=&H80) AND (LMG<&HA0) THEN LMDK=1 ELSE LMDK=0
13750 IF LMDX=1 THEN LMD$="2":LMDX=0:GOTO 13780
13760 IF LMDK=1 AND LMDX=0 THEN LMD$="1":LMDX=1:GOTO 13780
13770 IF LMDK=0 THEN LMD$="0":LMDX=0
13780 LMGD$=LMGD$+LMD$
13790 NEXT II:LMGF$=MID$(LMGD$,LCSR+1,1):LMG$=LMX$
13800 RETURN
13810 *LCSRD :LXC=8*(LX+LCSR) :LYC=LY*19:GOSUB 13840: '//// Csr Disp
13820 *LCSRDX:LXC=8*(LX+LCSRX):LYC=LY*19:GOSUB 13840: '//// Csr Erace
13830 LCSRX=LCSR:RETURN
13840 LINE(LXC,LYC+0)-(LXC+1,LYC+14),XOR,LCSRCL,BF:RETURN
13850 *LCSRINC :LCSR=LCSR+1:IF LCSR>=LL THEN LCSR=LL-1
13860 GOSUB *LCSRD:RETURN
13870 *LCSR2INC:LCSR=LCSR+2:IF LCSR>=LL THEN LCSR=LL-2
13880 GOSUB *LCSRD:RETURN
13890 *LCSRDEC :LCSR=LCSR-1:IF LCSR<0 THEN LCSR=0
13900 GOSUB *LCSRD:RETURN
13910 *LMXDSP:LOCATE LX,LY:COLOR LC:PRINT LMX$;:RETURN
19000 '
19010 '//////////////////////////////////////////////////////////////
19020 *ERROR:' エラー処理サブルーチン V1.10 1990.11.08 T.Komura
19030 '
19040 '
19050 IF ERR=53 THEN *IOERR
19060 IF ERR=63 THEN *FILNOF
19070 IF ERR=67 THEN *DSKFUL
19080 IF ERR=71 THEN *DSKUNF
19090 IF ERR=72 THEN *DSKOFF
19100 IF ERR=73 THEN *DSKWP
19110 ERMES$="エラー行:"+STR$(ERL)+" エラー番号:"+STR$(ERR)+" 発生"
19120 GOSUB *ERMSG
19130 STOP
19140 '////////// エラー処理
19150 *IOERR
19160 ERMES$="プリンターが準備されていません。 プリンターをセット後、"
19170 GOSUB *ERMSG:RESUME
19180 *DSKFUL
19190 ERMES$="ディスクが満杯です。 交換後、"
19200 GOSUB *ERMSG:RESUME
19210 *DSKUNF
19220 ERMES$="このディスクは使用出来ません。処理を中断します。 "
19230 GOSUB *ERMSG:RESUME
19240 *DSKOFF
19250 ERMES$="ディスク装置が準備されていません。ディスクをセット後、"
19260 GOSUB *ERMSG:RESUME
19270 *DSKWP
19280 ERMES$="ディスクが書き込み禁止になっています。解除後、"
19290 GOSUB *ERMSG:RESUME
19300 *FILNOF
19310 ERMES$="ファイルが見つかりません。ディスクを交換後、"
19320 GOSUB *ERMSG:RESUME
19330 '
19340 *ERMSG:'////////// エラーメッセージ
19350 LOCATE 2,23:COLOR 2,0
19355 PRINT SPACE$(77);
19359 LOCATE 2,23:COLOR 2,0
19360 PRINT ERMES$;"[実行]キーを押してね!";
19370 COLOR 7,0:MESN=19:GOSUB *SNDMSG
19380 ERRA$=INKEY$:IF ERRA$="" THEN 19380
19390 IF ERRA$<>CHR$(&H0D) THEN 19380
19400 LOCATE 3,23:COLOR 6,0
19410 PRINT "エラー処理を終わります。";SPACE$(52);
19420 RETURN
19430 '
19440 '
19450 '
20000 '------------------------------------------------------------------
20010 ' CUSTOM SUB ROUTINE FOR "DOQSO.BAS"
20020 '------------------------------------------------------------------
20100 *表紙表示
20105 PLAY "L16O7C<BAG>C<BAGR2>C<BAG>C<G>L4C"
20140 'RANDOMIZE TIME/3
20145 'A=INT(RND*6)+1:A$=RIGHT$(STR$(A),1)
20150 'LOAD@ TIFDRV$+"\MAINB"+A$+".tif",(0,0)
20155 LOAD@ TIFDRV$+"\MAINb.tif",(0,0)
20156 LOAD@ TIFDRV$+"\MAINt.tif",(156,83)'(296,3)
20180 RETURN
20190 '
20200 *HLIDXファイルチェック
20210 GOSUB *HKIOPN:CLOSE
20220 IF IR>0 THEN RETURN
20230 LOCATE 2,22:COLOR 6
20235 PRINT "インデックスファイルがありません。家計簿システム用のディスクを作成しますか?";
20240 CMES$="家計簿データディスク作成":GOSUB *確認
20245 LOCATE 2,22:PRINT SPACE$(76);
20250 ON SWNO GOTO 20260,*S04
20260 GOSUB *ファイル年月入力
20300 GOSUB *新規ファイル作成
20310 RETURN
20390 '
20400 *ファイル年月入力
20410 LOCATE 2,22:COLOR 7,0
20420 PRINT "何年何月の家計簿ファイルを作成しますか? ";
20430 SYMBOL(8*54,22*19)," 年 月",1,1,7,,,&H01
20440 GOSUB *本日の日付
20450 YR$=TY$:MN$=TM$
20470 LM$=YR$:LL=4:LC=5:LX=54:LY=22:GOSUB *LKEYIN
20475 YR$=LMG$
20480 LM$=MN$:LL=2:LC=5:LX=61:LY=22:GOSUB *LKEYIN
20485 MN$=LMG$
20510 LOCATE 2,22:COLOR 7,0
20520 PRINT YR$;"年";MN$;"月の家計簿ファイルを作成します。";
20540 RETURN
20550 '
20700 *新規ファイル作成
20760 CMES$="["+YR$+"年"+MN$+"月]ファイル新規作成"
20770 GOSUB *確認
20780 ON SWNO GOTO 20800,*S04
20800 MESN=24:GOSUB *SNDMSG
20810 IYM$=YR$+MN$:IMAK$=SPACE$(32):'--------------IDX追加
20820 RI=IR+1:GOSUB *HKIPUT
20830 DEV$=SPACE$(64):DDM$=SPACE$(32):'------------ファイル作成
20835 FOR JJ=1 TO 16:DYN$(JJ)=SPACE$(10):DRM$(JJ)=SPACE$(32):NEXT JJ
20840 FOR RDY=1 TO 31
20845 LOCATE 70,22:COLOR 4:PRINT RIGHT$(STR$(RDY),2);" / 31";
20850 GOSUB *HKDPUT
20860 NEXT RDY:MESN=14:GOSUB *SNDMSG:LOCATE 70,23:PRINT SPACE$(8);
20870 RETURN
20880 '
20900 STOP
21000 *本日の日付
21010 TY$=LEFT$(DATE$,2) :TY=VAL(TY$)
21020 IF TY<90 THEN TY=TY+2000 ELSE TY=TY+1900
21030 TY$=RIGHT$(STR$(TY),4)
21040 TM$=MID$(DATE$,4,2):TM=VAL(TM$)
21050 TD$=RIGHT$(DATE$,2):TD=VAL(TD$)
21100 RETURN
21110 '
22900 '------------------------------------------------------------------
30130 *ボタン座標読み取り
30140 RESTORE *ボタン座標:READ SWGN
30150 FOR G=1 TO SWGN
30160 READ SWN(G),SMX(G),SMY(G),SMW(G)
30170 FOR B=1 TO SWN(G)
30180 READ XB1(G,B),XB2(G,B),YB1(G,B),YB2(G,B)
30190 NEXT B
30200 NEXT G
30210 RETURN
30220 '
30230 *ボタンON_OFF表示
30240 IF BST(G,B)=1 THEN BSC=7:BSB=0:BSA=2:GOTO 30260
30250 BSC=0:BSB=7:BSA=5
30260 CONNECT(XB1(G,B ),YB2(G,B) )-(XB2(G,B) ,YB2(G,B) )-(XB2(G,B ),YB1(G,B) ),BSC,PSET
30270 CONNECT(XB1(G,B)+1,YB2(G,B)-1)-(XB2(G,B)-1,YB2(G,B)-1)-(XB2(G,B)-1,YB1(G,B)+1),BSC,PSET
30280 CONNECT(XB1(G,B) ,YB2(G,B) )-(XB1(G,B) ,YB1(G,B) )-(XB2(G,B) ,YB1(G,B) ),BSB,PSET
30290 CONNECT(XB1(G,B)+1,YB2(G,B)-1)-(XB1(G,B)+1,YB1(G,B)+1)-(XB2(G,B)-1,YB1(G,B)+1),BSB,PSET
30300 LINE(XB1(G,B)+4,YB1(G,B)+4)-(XB1(G,B)+6,YB1(G,B)+5),PSET,BSA,BF
30305 IF BST(G,B)=1 THEN SMSGPLAY 0:WAIT 16
30310 RETURN
30320 '
30330 *マウスボタン選択
30340 SWERC=0
30350 IF MOUSE(2,0)=0 THEN 30350
30360 X_M=MOUSE(4,0):Y_M=MOUSE(5,0):SWNO=0
30370 FOR IMS=1 TO SWN(G)
30380 IF (X_M>XB1(G,IMS) AND X_M<XB2(G,IMS)) ELSE 30410
30390 IF (Y_M>YB1(G,IMS) AND Y_M<YB2(G,IMS)) ELSE 30410
30400 SWNO=IMS:IMS=SWN(G)+1
30410 NEXT IMS:FOR IM=1 TO 500:NEXT IM
30430 IF SWNO=0 AND SWERC>5 THEN MESN=12:GOSUB *SNDMSG :GOTO 30350
30440 IF SWNO=0 THEN SMSGPLAY 3:SWERC=SWERC+1:GOTO 30350
30460 SWPASS=0
30470 RETURN
30480 '
31000 *FADEOUT:CLS 1:CONSOLE 0,24,0
31010 FOR II=0 TO 15
31020 PALETTE II,[16*II,16*II,16*II]
31030 NEXT II
31040 FOR II=0 TO 255 STEP 5:WAIT SWAIT/50
31050 FOR JJ=0 TO 15:KK=16*JJ+II*(255-16*JJ)/255
31054 PALETTE JJ,[KK,KK,KK]
31056 NEXT JJ
31060 NEXT II
31070 RETURN
31080 '
31200 *確認
31205 LOCATE 27,3:PRINT SPACE$(52)
31210 GET@A(214,50)-(630,79),CUTN#
31220 LOAD@ TIFDRV$+"\CAUTION.TIF",(214,50)
31230 FOR II=1 TO 4
31232 LOCATE 40,3:COLOR 6:PRINT CMES$;:'28chr
31234 WAIT SWAIT/10
31236 LOCATE 40,3:PRINT SPACE$(28)
31237 WAIT SWAIT/10
31238 NEXT II
31239 LOCATE 40,3:COLOR 7:PRINT CMES$;:MESN=19:GOSUB *SNDMSG
31240 G=2:GOSUB *マウスボタン選択
31245 G=2:B=SWNO:BST(G,B)=1:GOSUB *ボタンON_OFF表示
31250 LOCATE 40,3:PRINT SPACE$(28)
31260 FOR II=1 TO 1000:NEXT II
31270 PUT@A(214,50)-(630,79),CUTN#
31272 'GOSUB *日付表示
31275 RETURN
31280 '
35000 *HKIOPN:'---------- インデックスファイルオープン
35005 DRV$=LEFT$(DATDRV$,2)
35010 IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 35020
35015 PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
35020 FLN$=DRV$+"(38)"+PATH$+"\HLIDX.DAT"
35030 OPEN "R",#2,FLN$
35040 FIELD #2,6 AS I$(1),32 AS I$(2)
35050 IR=LOF(2)
35060 RETURN
35070 '
35100 *HKDOPN:'---------- 家計簿データファイルオープン
35105 DRV$=LEFT$(DATDRV$,2)
35110 IF LEN(DATDRV$)=3 THEN DRV$=LEFT$(DATDRV$,2):PATH$="":GOTO 35120
35115 PATH$=RIGHT$(DATDRV$,LEN(DATDRV$)-2)
35120 FLN$=DRV$+"(768)"+PATH$+"\HL"+IYM$+".DAT"
35130 OPEN "R",#1,FLN$
35140 FIELD #1,64 AS D$(1),10*16 AS D$(2),32*4 AS D$(3),32*4 AS D$(4),32*4 AS D$(5),32*4 AS D$(6),32 AS D$(7)
35150 AR=LOF(1)
35160 RETURN
35170 '
36100 *HKIPUT:'---------- インデックスファイル作成
36110 GOSUB *HKIOPN
36120 LSET I$(1)=IYM$
36130 LSET I$(2)=IMK$
36140 PUT #2,RI
36150 CLOSE #2
36160 RETURN
36170 '
36300 *HKDPUT:'---------- 家計簿データ書き込み
36310 GOSUB *HKDOPN
36320 R=RDY
36330 LSET D$(1)=DEV$
36340 DX$="":FOR II=1 TO 16:DX$=DX$+DYN$(II ):NEXT II:LSET D$(2)=DX$
36342 DX$="":FOR II=1 TO 4:DX$=DX$+DRM$(II+ 0):NEXT II:LSET D$(3)=DX$
36343 DX$="":FOR II=1 TO 4:DX$=DX$+DRM$(II+ 4):NEXT II:LSET D$(4)=DX$
36344 DX$="":FOR II=1 TO 4:DX$=DX$+DRM$(II+ 8):NEXT II:LSET D$(5)=DX$
36345 DX$="":FOR II=1 TO 4:DX$=DX$+DRM$(II+12):NEXT II:LSET D$(6)=DX$
36346 LSET D$(7)=DDM$
36350 PUT #1,R
36360 CLOSE #1
36370 RETURN
36380 '
37190 '
37290 '
39000 *CONFIGファイルチェック' V10 1993.02.07
39010 OPEN "R",#1,"(1)HK.CFG"
39020 FIELD #1,1 AS D$
39030 IF LOF(1)=0 THEN *CFGFE1
39035 CLOSE
39040 OPEN "I",#1,"HK.CFG"
39050 GOSUB *CFGREAD:PRGDRV$=CFG$:'-- PRGDRV$
39052 GOSUB *CFGREAD:DATDRV$=CFG$:'-- DATDRV$
39054 GOSUB *CFGREAD:RAMDRV$=CFG$:'-- RAMDRV$
39056 TIFDRV$=PRGDRV$+"\TIFF" :'-- TIFDRV$
39058 GOSUB *CFGREAD:FMBDRV$=CFG$:'-- FMBDRV$
39060 GOSUB *CFGREAD :'-- SNDMF
39062 IF LEFT$(CFG$,5)<>"SNDMF" THEN *CFGFE2
39064 SNDMF=VAL(RIGHT$(CFG$,1))
39066 GOSUB *CFGREAD:SNDDRV$=CFG$:'-- SNDDRV$
39068 GOSUB *CFGREAD :'-- SWAIT
39070 IF LEFT$(CFG$,4)<>"WAIT" THEN *CFGFE2
39072 SWAIT=VAL(RIGHT$(CFG$,LEN(CFG$)-5))
39080 FOR II=1 TO 15
39082 GOSUB *CFGREAD:CFI$(II)=CFG$
39084 NEXT II
39140 CLOSE
39150 RETURN
39200 *CFGFE1
39220 LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルが見当たりません。 家計簿を終了します。"
39230 CLOSE:WAIT 100:GOTO *S04
39300 *CFGFE2
39320 LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルの内容に誤りがあります。 家計簿を終了します。"
39330 CLOSE:WAIT 100:GOTO *S04
39400 *CFGFE3
39420 LOCATE 2,23:COLOR 6:PRINT "HK.CFG ファイルの項目に不足があります。 家計簿を終了します。"
39430 CLOSE:WAIT 100:GOTO *S04
39500 *CFGREAD
39510 IF EOF(1)<>0 THEN *CFGFE3
39520 LINE INPUT #1,CFG$
39530 IF LEFT$(CFG$,1)="/" THEN 39510
39540 RETURN
39990 '
40000 *ボタン座標:'-------------------------------------------------------
40010 DATA 2 'SWGN スイッチグループ数
40090 '/////////////////////////////
40100 '-------------------- メインメニュースイッチグループ
40110 ' SWN(G),SMX,SMY,SMW
40120 DATA 4 ,0.8,0.8, 0
40130 ' XB1 XB2 YB1 YB2 SWM$ SMC
40140 DATA 220,293, 89,115',"記入・編集",0
40150 DATA 294,363, 89,115'," 検 索 ",0
40160 DATA 364,433, 89,115'," 分 析 ",0
40170 DATA 434,483, 89,115',"終わり",2
40500 '-------------------- スイッチグループ[2]
40510 ' SWN(G),SMX,SMY,SMW
40520 DATA 2 ,0.8,0.8, 0
40530 ' XB1 XB2 YB1 YB2 SWM$ SMC
40540 DATA 552,583, 56, 73'," OK ",1 01
40550 DATA 584,615, 56, 73'," NG ",1 02
60000 '
60010 ' 座標確認 DEBUG ROUTINE
60020 '
60030 MOUSE 0:MOUSE 1,0,0,1
60040 IF MOUSE(2,1)<>0 THEN STOP
60050 IF MOUSE(2,0)=0 THEN 60050
60060 X_M=MOUSE(4,0):Y_M=MOUSE(5,0):LX=INT(X_M/8):LY=INT(Y_M/19)
60070 LOCATE 2,24:COLOR 7:PRINT "X=";X_M,"Y=";Y_M,"LX=";LX,"LY=";LY;
60080 GOTO 60040
61000 '